Telecommunications networks, such as mobile communications networks, and computer networks, such as the Internet, are widely used for remotely providing services to terminals accessible by users or customers. These terminals are herewith referred to as client terminals while the users or customers accessing the client terminals are herewith referred to as client users. The provision of a service is a technical and economical activity which may for instance result in the ownership of physical goods through a sale.
The provision of a service may for instance be initiated by the transmission of a request for a service, such as a Hypertext Transfer Protocol (HTTP) request through a computer network. The request for a service is transmitted from a client terminal to a computer system configured for handling the request and for carrying steps to provide the service. After reception of the request, a response thereto may be sent by the computer system, which may for instance include a web server, to the client terminal in order to request more information input from the client user or in order to confirm to the client user that a service or a portion of a service has been successfully provided.
The requests and responses exchanged between the client terminals and the computer system constitute data communication traffic travelling on networks, for instance switched data packet networks. The networks may include routers, which are processing units configured for determining the proper path for the requests and responses to travel in the networks, and for forwarding the requests and responses to the next device along this path.
In the context of providing a service through a network infrastructure, performance and reliability constitute two requirements.
The performance of a computer network infrastructure may be viewed as a measure of the quality and responsiveness of the infrastructure for providing a service as seen from client users. The reliability of a computer network infrastructure may be viewed as a measure of how reliable the infrastructure is for providing a service, which may for instance be related to the likelihood that the computer network infrastructure fails to provide the service.
Methods exist to improve the performance and reliability of a computer network infrastructure or system. One method is to use a configuration or architecture wherein a plurality of server computers are provided in the system configured for handling the requests for a service. A server computer is a computer configured with computer instructions for accepting connections to service requests and for optionally sending back responses.
Such a plurality of server computers may be arranged as a cluster of server computers with a particular server computer acting as a request distributor. More generally, a request distributor refers to a computer entity configured for receiving requests from a network and for distributing these requests.
As seen from the client users, the system including the cluster of server computers and the request distributor can be perceived as a single computer carrying out actions to respond to the requests and provide the service. The system includes a plurality of server computers, i.e. the cluster of server computers, but it operates in such a manner that the presence of the cluster is generally not perceived by client users. The operation of the cluster is generally said to be transparent to the client users.
In order to improve the performance and reliability of the system for providing the service, the capacity of a server computer cluster may be increased by increasing the number of server computers in the cluster. Client users substantially see no difference, except the improved performance and reliability, since the client terminals exchange requests and responses only with an access point. The access point may for instance be the request distributor or another entity arranged between the client terminals and the request distributor. A certain degree of transparent scalability is said to be provided when the number of server computers can be increased while the client users substantially see no difference.
Thus, increasing the number of server computers in a cluster, also called server pool or server farm, generally improves reliability and performance. Reliability is improved by providing redundancy in the event of the failure of one or more server computers or in the event that one or more server computers are temporarily shut down for maintenance. Performance is increased by an increase spreading of the requests amongst the server computers and thus the responsiveness of the server computers is increased, because a given amount of requests may be handled by more server computers.
The architecture including the cluster of server computers and the request distributor to receive the requests enables distributed and parallel handling of the service requests.
The request distributor has the function of distributing, or dispatching, the requests to the server computers making up the cluster.
The distribution mechanism for distributing the requests to the server computers and for spreading work between them may be a load-balancing mechanism. It may aim at a uniform use of resources across the available server computers and may for instance be based on a round robin scheduling mechanism where each server computer receives an equal share of the requests in turn. The distribution mechanism may be independent of the capacity or status of the server computers, or may instead depend on the hardware or software characteristics of the server computers or on their status or characteristics at a given moment in time, such as their processing or memory capacity, their response time, or the number of active connections, i.e. the communication link usage.
Static configuration rules to determine the destination server computer may be used by the request distributor to distribute the requests, depending for instance on the content or type of the requests.
In addition, one or more server computers may be specialized for handling certain tasks and the static configuration rules may take this functional specialization into account.
The server computers have the function of handling the requests transmitted from the request distributor. The handling of the requests enables to provide the service.
The completion of most services involves a plurality of steps to be carried out according to an execution flow. Therefore, context information pertaining to each one of the initiated service delivery processes is needed by the server computer for handling requests. The state of the interaction with one client user, i.e. the state in the service execution flow, needs to be retained and available when and where necessary. A service delivery process is a process of providing a given service to a given client terminal. In addition to retaining the state of the service delivery process, the context information may include user preferences associated with the handling of the service.
In the context of providing a service through a computer network infrastructure, methods exist to retain context information or, in other words, to provide persistence.
A first solution to retain context information is to send all requests relating to a same service delivery process to a given server computer which retains context information for handling these requests. In this solution, the request distributor may for instance send all requests coming from the same source, e.g. from a given Internet Protocol (IP) address or a given network access server (NAS), to one server computer. The information about the state of the service delivery process is stored locally in the server computer. That is, upon processing a request, the server computer keeps necessary information about the service delivery process. This solution binds a server computer to a client terminal.
This solution requires that the request distributor is able to recognize the requests associated with a given service delivery process. However, this is not always possible. In addition, this solution runs counter the primary advantages of load balancing. This is especially true if, from a given source such as a given Internet Protocol (IP) address of a network access server (NAS), many requests relating to different deliveries of service and coming from different client users are received.
A second solution is to allow all computer servers to access a shared database or shared resources wherein the context information about all executing service delivery processes is stored.
This solution introduces the complexity of adding a shared database and affects the overall system efficiency by requiring extra steps to be implemented to store (write) and retrieve (read) context information from the shared database.
As a third solution, small tokens such as cookies, which are sent in every client request and include the indication of the state of the service delivery process, may be used. In other words, the client terminal is provided with context information, and upon sending the next request, the client includes the context information. The server computer can therefore retrieve the context information from the request itself.
The third solution requires additional information, i.e. the context information, to be transferred on the network to the client terminal and back to the request distributor and the server computer. This may cause an additional load on the network. The solution also involves transferring context information to the client terminal, a practice which involves security issues as sensitive information pertaining to the system internal operation may then be sent.
The three above-described solutions have each specific problems and generally lack flexibility. It is therefore desirable to provide an alternative method for distributing requests which solves or partially solve the above-mentioned problems.